Catch test case order [on hold]
Posted
by
DeadMG
on Stack Overflow
See other posts from Stack Overflow
or by DeadMG
Published on 2013-10-30T21:45:48Z
Indexed on
2013/10/31
21:55 UTC
Read the original article
Hit count: 101
c++
|catch-unit-test
Can I guarantee the order of execution with multiple TEST_CASE
s with Catch? I am testing some code using LLVM, and they have some despicable global state that I need to explicitly initialize.
Right now I have one test case that's like this:
TEST_CASE("", "") {
// Initialize really shitty LLVM global variables.
llvm::InitializeAllTargets();
llvm::InitializeAllTargetMCs();
llvm::InitializeAllAsmPrinters();
llvm::InitializeNativeTarget();
llvm::InitializeAllAsmParsers();
// Some per-test setup I can make into its own function
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile...));
CHECK_NOTHROW(Interpret(...));
CHECK_THROWS(Compile(...));
CHECK_THROWS(Compile(...));
}
What I want is to refactor it into three TEST_CASE
,
- one for tests that should pass compilation,
- one for tests that should fail, and -one for tests that should pass interpretation (and in the future, further such divisions, perhaps).
But I can't simply move the test contents into another TEST_CASE
because if that TEST_CASE
is called before the one that sets up the inconvenient globals, then they won't be initialized and the testing will spuriously fail.
© Stack Overflow or respective owner